M=6 (3,6) runlength limited code for multi-level data

ABSTRACT

A system got encoding digital data with an M-ary (d,k) code to provide multi-level coded data where M&gt;2 comprises an M-ary (d,k) encoder for accepting digital input data. The M-ary (d,k) coder encodes the digital input data to produce a plurality of code symbols, where each code symbol is at one of M levels and each pair of non-zero code symbols is separated by at least d but no more than k zeros. A waveform encoder converts the code symbols into waveform signal amplitudes compatible with a multi-level channel. Each waveform signal amplitude is generated by modulo M addition of a current code symbol with a previous waveform signal amplitude. A specific M=6 (3,6) code provides high density recording to a multi-level storage medium. The M=6 (3,6) encoder is implemented using a six-state encoder and a modulo six waveform encoder.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to multi-level codingtechniques, and more specifically to a system and method for coding datausing an M=6 (3,6) runlength limited code, such code being particularlyuseful for storing and/or transmitting multi-level data.

2. Related Art

Various techniques are currently in use for increasing the recordingdensity on various digital recording mediums such as magnetic tapes anddisks and in other similar media. One technique utilizes an approachknown as run-length-limited coding. This technique requires that each"1" in a coded bit sequence must be separated by a specified number of"0's". This number of zeros must be at least a minimum quantity, d, toreduce intersymbol interference, and is limited to a maximum quantity kfor self clocking purposes. Such codes are generally referred to as(d,k) m-length-limited (RLL) codes.

Because conventional recording techniques use saturation recording tostore information, binary recording techniques are often used to markthe recording medium. As a result, conventional (d,k) RLL codesdeveloped to date are developed and optimized to store binary data.

Significant advances in data storage materials have lead to thedevelopment of a storage medium that provides a linear responsecharacteristic. One such material providing a linear responsecharacteristic is an electron trapping material such as is disclosed inU.S. Pat. Nos. 4,864,536, 5,007,037, and 5,142,493, all to Lindmayer.

Using a material which provides a linear response characteristic yieldsan advantage over saturation-type media in that it adds an analogdimension to the storage capacity of the medium. Because the response islinear, the linear-response storage materials provide the ability toencode information in two dimensions--amplitude and phase.

As a result, the Storage medium is no longer confined to storing binaryor even tri-level data. Instead, the concept of M-ary, or non-binary,data coding and storage is provided. The increased symbol set allowed bysuch encoding provides the opportunity to dramatically increase the datarecording density and transfer rate of the storage device. For example,the potential storage capacity of a single 51/4 inch disk can beextended to several gigabytes if that disk is implemented using electrontrapping materials with M-ary (multi-level) data coding.

SUMMARY OF THE INVENTION

The present invention is directed toward an M=6 (3,6) runlength-limitedcode for multi-level data storage and/or communications. Also disclosedherein is a system and method for generating multi-level data from abinary input data stream using an M-ary (d,k) code such as the M=6 (3,6)runlength limited code.

According to the invention input data bits are coded using an M-ary(d,k) encoder to generate code symbols. Specifically, input data bits xare encoded using the M-ary (d,k) encoder to generate code symbols y,where:

    x=(x.sub.0, x.sub.1, . . . x.sub.p.sup.-1),

for p input data bits

    y=(y.sub.0, y.sub.1, . . . y.sub.p.sup.-1),

where p=the code rate R

The code symbols y are multi-level symbols, each being at one of Mlevels. The code symbol stream provided meets the code specifications ofno fewer than d and no greater than k zeros between each non-zerosymbol. Thus, according to the M=6 (3,6) code disclosed herein, codesymbols are each at one of six levels and there is a minimum of threeand a maximum of six zeros between each non-zero symbol.

The code symbols y are encoded to generate a series of waveformamplitudes z. The waveform amplitudes are generated by modulo M additionof the current code symbol y_(i) with the previous waveform amplitudez_(i-1). The waveform amplitudes are used to modulate a write laser tostore information onto an optical disk or to otherwise store orcommunicate the input data bits x in the form of multi-levelinformation.

To recover the original data bits x from the medium, the informationstored on the medium is read and the resultant signal amplitudes aredecoded. Two stages of decoding are provided. In the first stage, thewaveform amplitudes are decoded to generate code symbols. In the secondstage, the code symbols are decoded to recover the original data bits.

The system and method described herein for coding and decoding the datais described with respect to the M=6 (3,6) code disclosed herein.However, while other codes may not be obvious in light of the codedisclosed herein, given a specific M-ary (d,k) code, after reading thebelow disclosure, it will become apparent to a person skilled in therelevant art how the disclosed system and method can be implemented tocode and decode the data using such a specific M-ary (d,k) code.

An advantage of the invention is that the recording density can beincreased by coding the input data using the disclosed M=6 (3,6) code.Because there are at least d zeros between every non-zero code symbol,there can be at least d+1 symbols stored for a given minimum featuresize. Given a code of rate R, the density achievable is (d+1)R.

It should be noted that the coding techniques described herein are notlimited to optical recording. Other recording systems capable ofsupporting multi-level data would benefit from the coding techniquesdescribed herein. Additionally, these coding techniques are alsoapplicable to communications systems where the communications channel iscapable of supporting multi-level data. In such an implementation, thewaveform amplitudes could be used to modulate a signal carrier fortransmission across the multi-level channel.

Further features and advantages of the present invention, as well as thestructure and operation of various embodiments of the present invention,are described in detail below with reference to the accompanyingdrawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is described with reference to the accompanyingdrawings. In the drawings, like reference numbers indicate identical orfunctionally similar elements. Additionally, the left-most digit(s) of areference number identifies the drawing in which the reference numberfirst appears.

FIG. 1 is a diagram illustrating a portion of an optical storage mediumand features thereon.

FIG. 2 is a diagram illustrating a data storage system for storing amulti-level coded data.

FIG. 3 is a diagram illustrating an encoder for encoding multi-leveldata using a multi-level (d,k) code.

FIG. 4 is a flow diagram illustrating the operation of a multi-stateencoder.

FIG. 5 is a diagram illustrating an example input data stream beingcoded using the encoder illustrated in FIG. 4.

FIG. 6 is a diagram illustrating a decoder for decoding multi-level(d,k) coded data.

FIG. 7 is a diagram illustrating a sliding block decoder.

DETAILED DESCRIPTION OF THE EMBODIMENTS

1. Introduction

The present invention is directed toward an M-ary (d,k) code for use instorage and/or transmission of multi-level data, and a system and methodfor generating the same. This discussion is provided in severalsections. In Section 2, before discussing the invention in detail, abrief discussion of binary (d,k) codes is presented. In Section 3, acoding system for coding input data using an M-ary (d,k) code isdescribed. In Section 4, some code design factors are described. InSection 5, a specific M=6 (3,6) code is described that is particularlyuseful for storage and/or transmission of multi-level data. Section 5also provides a detailed description of the encoder used to code datausing the disclosed M=6 (3,6) code. In Section 6 there is presented adiscussion of a sliding block decoder generally useful for decodingM-ary (d,k) codes, as well as a specific decoder for decoding the M=6(3,6) code described in Section 4.

The present invention is generally described in terms of an embodimentwhere multi-level data are stored on and retrieved from an optical disk.In such an embodiment, the encoder and decoder described herein may beimplemented for multi-level data storage in an optical disk system suchas that disclosed in U.S. Pat. No. 5,007,037, which is incorporatedherein by reference. However, after reading the below description, itwill become apparent to a person skilled in the relevant art how thesystems and methods of the invention can be implemented for alternativeapplications such as multi-level data communications and storage ofmulti-level data on media other than optical disks. In yet otheralternative embodiments, the invention can be implemented to transmitand receive data across an M-ary communications channel. In thisdocument, the term "channel" is sometimes used to refer to the opticaldisk. It should be understood that in the alternative embodiments theterm channel can be used to describe alternative storage media and/orcommunications channels.

Additionally, after reading the below detailed description of theencoder and decoder of the present invention, it will become apparent toa person skilled in the art that these disclosed components can beimplemented using hardware, software or a combination of both hardwareand software.

2. Binary (d,k) Run-Length-Limited Coding

Using conventional binary storage techniques, data are written to astorage medium using binary 1's and 0's. Using run-length limitedcoding, the data to be recorded are first encoded using am-length-limited encoder. As stated above, with a (d,k) RLL code, thereis a minimum and a maximum number of 0's that can occur between eachpair of 1's, as specified by the code parameters d and k. Thus, the(d,k) RLL encoder results in a 1 followed by at least d and at most k0's before another 1 occurs. Such (d,k) RLL codes for binaryapplications are well known in the art.

To write input data to the saturation storage medium, the input data arefirst encoded to create symbols. The encoder is designed such that theoutput symbols conform to the code specifications: each 1 is followed bya minimum of d and a maximum of k 0's. These symbols are then written tothe storage medium as a series of features. For example, for opticaldisks, a feature is the presence or absence of a burn mark. In amagnetic tape, the feature is a grouping of magnetic particles orientedin a particular manner.

FIG. 1 illustrates a portion of an optical storage medium 108 thatstores binary data as features 102. Illustrated are shaded and unshadedfeatures 102, indicating the absence or presence of a burn mark. Alsoillustrated in FIG. 1 is an example symbol stream 112 that is used towrite the features 102 to medium 108. As discussed above, symbol stream112 is the result of encoding input data using a (d,k) RLL code. Symbolstream 112 is written to medium 108 using an additional coding step asfollows: the occurrence of a 1 indicates a change in the type of mark(i.e., absence or presence of a bum mark); the occurrence of a 0indicates no change in mark type. This additional coding step issometimes referred to as non-return-to-zero interleaved (NRZI)precoding.

Note that with a (d,k) RLL code where d=2, the minimum number of symbolsrepresented by a single feature 102 is three. Thus, for a minimumfeature size (e.g., for the smallest spot size on medium 108) threesymbols can be represented. As a result, for a rate 1/2 code, where eachinput bit corresponds to two symbols, the minimum density of datawritten to medium 108 is 1.5 bits per feature. Thus, as a result ofusing the (d,k) RLL coding in the described scenario, the density of therecording system can be increased by 50%.

3. A Generic M-ary Runlength-Limited (d,k) Coder

A few advantages of (d,k) coding are described above with reference tobinary data systems. It is important to note that similar gains indensity can be realized for storage and communications systems usingmulti-level (versus binary) data. To optimize such gains, however, newcodes and new coding techniques are required to take full advantage ofthe unique properties of the multi-level data. Thus, the inventors havedeveloped a system and method for encoding data using M-ary (d,k) codes.

FIG. 2 is a high-level block diagram generally illustrating amulti-level data recording system 200. The recording system is comprisedof an encoder 204, multi-level storage medium 208 and a decoder 212. Asstated above, multi-level storage medium 208 can be replaced with acommunications channel allowing the multi-level (d,k) code and codingscheme to be used with multi-level data communications. In such acommunications embodiment, encoder 204 and decoder 212 can be providedon both ends of the communications channel to allow bi-directional codedcommunications.

According to the invention, input data bits x=(x₀, x₁, . . . , x_(p) ⁻¹)are the actual data that a user wishes to be stored on and retrievedfrom medium 208. However, to take full advantage of the multi-levelproperties of medium 208 and to increase the storage density achieved,the invention provides for the encoding of input data x so thatmulti-level data is stored on medium 208. Such encoding is accomplishedusing encoder 204.

In one embodiment, encoder 204 is implemented as a two-stage encoder.FIG. 3 is a block diagram illustrating encoder 204 in this embodiment.Referring to FIG. 3, encoder 204 is comprised of a symbol encoder 304and a waveform encoder 308, referred to herein as encoder 304 andencoder 308, respectively.

Encoder 304 is a (d,k) RLL symbol encoder that accepts the input databits x and converts them to a stream of code symbols y=(y₀, y₁, . . . ,y₄₋₁). To take advantage of the multi-level characteristics of medium208, encoder 304 generates code symbols y at M different levels, whereM>2. A second feature of encoder 304 is that the stream of code symbolsy meets the code specification that there are no fewer than d and nogreater than k zeros between each non-zero code symbol. Another featureof encoder 304 is that there are R input bits x_(i) for each code symboly_(i) generated. This feature is referred to as the code rate. Thus fora rate 1/N code (i.e., where R=1/N), there are N code symbols y_(i)generated for each input data bit x_(i).

Waveform encoder 308 accepts code symbols y and converts them to aseries of waveforms z=(z₀, z₁, . . . , z_(p) ⁻¹), each of a givenamplitude. Waveform encoder 308 generates output waveforms z, each atone of M different amplitudes. The waveform amplitudes are generated bymodulo M addition of the current code symbol y_(i) with the previouswaveform amplitude z_(i-1). It is the waveforms z which are used tomodulate a write laser for storing data onto medium 208 (or transmittedacross the multi-amplitude channel).

Because there are at a minimum d zeros, between each non-zero codesymbol, each waveform amplitude z generated represents, at a minimum,d+1 code symbols y. Also, because there are 1/R code symbols y generatedfor each input data bit x, each waveform amplitude z generatedrepresents, at a minimum, (d+1)R data bits x. Thus, for a minimumfeature size (e.g., the smallest spot that can be written to the storagemedium or the shortest pulse that can be transmitted across thecommunications channel), the density achieved is D=(d+1)R.

Consider this density in terms of the specific M=6 (3,6) code describedbelow. The rate of this code is R=4/5 and d=3. For this code, thedensity is 3.2 input data bits x_(i) per minimum feature size. In otherwords, 3.2 input data bits can be stored using a single minimum-sizefeature.

4. Code Design Factors

The coding system and method described above can be used to code inputdata using any of number of M-ary (d,k) codes. However, the design of aspecific M-ary (d,k) code is not a trivial matter.

There are several factors that must be taken into consideration whendesigning M-ary (d,k) codes. The specific coding scheme used toimplement a given code impacts the performance of the encoding anddecoding systems. For example, the code should be designed such thatencoders and decoders can be implemented in a straight-forward andcost-effective manner. Toward this end, the desirable code can beimplemented using encoders that have a relatively small number of stateswhile still meeting the code parameters (i.e., M, d and k).Additionally, the decoder required to decode the coded data should beimplementable using a small sliding block window size and the decodershould have a relatively a small table size.

Further, the code design must result in an encoder and decoder thatoperate such that errors in the decoder side have a minimum effect. Itwould be undesirable for errors to propagate too far in the decoded datastream. In some less-than-desirable systems, a single decoding error canresult in a very large, if not infinite, number of additional decodingerrors.

Achievement of such design goals is not a trivial matter. Not everyM-ary (d,k) code of a given set of parameter values will perform in adesirable manner. Provided in the next section of this document is aspecific M=6 (3,6)runlength-limited code that meets the design goalsoutlined above.

5. M=6 (3,6) Runlength-Limited Code

As stated above, code design is not a trivial matter as there areseveral coding factors that affect the performance of the system. Thespecific code implemented for a given set of parameters can impact theoverall performance of the system. This section of the patent documentdescribes a specific M-ary (d,k) code and the specific encoder used toimplement this code. In particular, this section describes a specificM=6 (3,6) runlength-limited code having a rate R=4/5.

Table 1 is a state table illustrating a state machine 400 for encodinginput data x to generate code symbols y for the M=6 (3,6) code (i.e. aspecific version of encoder 304). State machine 400 is a six-state, M=6(3,6) encoder. For each input data bit set x_(i) . . . x_(i+3), anoutput code symbol set y_(i) . . . y_(i+4) is produced; each output codesymbol y_(i) is at one of six levels (0-5). The various states as wellas the inputs and outputs of state machine 400 are illustrated usingTable 1.

FIG. 4 is an operational flow diagram illustrating the operation ofstate machine 400. The operation of state machine 400 is now describedwith reference to Table 1 and FIG. 4. In a step 404, the operationstarts in a given state at time t=0. In a step 408, an input data bitset x_(i) . . . x_(i+3) is received. In a step 412, Table 1 is used todetermine the output code symbol set y_(i) . . . y_(i+4) and next statefrom the current state and the input data bit set x_(i) . . . x_(i+3)received in step 408. In a step 416, encoder 304 outputs code symbol sety_(i) . . . y_(i+4) determined in step 412. In a step 420, state machine400 transitions to the next state determined in step 412. At this time,the operation continues at step 408 as indicated by flow line 426.

As is evident by the above description, an output code symbol set y_(i). . . y_(i+4) of encoder 304 is a function of the input data bit setx_(i) . . . x_(i+3), and the current state 404 of encoder 304. For theM=6 (3,6) encoder of the present invention, Table 1 describes the outputcode symbol set y_(i) . . . y_(i+4) and next state of encoder 304 foreach current state and input data bit set x_(i) . . . x_(i+3).

                  TABLE 1                                                         ______________________________________                                        INPUT        OUTPUT   NEXT STATE                                              ______________________________________                                        STATE 0                                                                       0            00000    3                                                       1            00000    4                                                       2            00000    5                                                       3            00010    0                                                       4            00020    0                                                       5            00030    0                                                       6            00040    0                                                       7            00050    0                                                       8            00010    1                                                       9            00020    1                                                       10           00030    1                                                       11           00040    1                                                       12           00050    1                                                       13           00001    0                                                       14           00003    0                                                       15           00005    0                                                       STATE 1                                                                       0            00100    1                                                       1            00200    1                                                       2            00300    1                                                       3            00400    1                                                       4            00500    1                                                       5            00100    0                                                       6            00200    0                                                       7            00300    0                                                       8            00400    0                                                       9            00500    0                                                       10           00100    2                                                       11           00200    2                                                       12           00300    2                                                       13           00400    2                                                       14           00500    2                                                       15           00004    0                                                       STATE 2                                                                       0            01000    3                                                       1            02000    3                                                       2            03000    3                                                       3            04000    3                                                       4            05000    3                                                       5            01000    4                                                       6            02000    4                                                       7            03000    4                                                       8            04000    4                                                       9            05000    4                                                       10           01000    5                                                       11           02000    5                                                       12           03000    5                                                       13           04000    5                                                       14           05000    5                                                       15           00002    0                                                       STATE 3                                                                       0            01000    3                                                       1            02000    3                                                       2            03000    3                                                       3            04000    3                                                       4            05000    3                                                       5            01000    4                                                       6            02000    4                                                       7            03000    4                                                       8            04000    4                                                       9            05000    4                                                       10           01000    5                                                       11           02000    5                                                       12           03000    5                                                       13           04000    5                                                       14           05000    5                                                       15           30003    0                                                       STATE 4                                                                       0            10000    3                                                       1            20000    3                                                       2            30000    3                                                       3            40000    3                                                       4            50000    3                                                       5            10000    4                                                       6            20000    4                                                       7            30000    4                                                       8            40000    4                                                       9            50000    4                                                       10           10000    5                                                       11           20000    5                                                       12           30000    5                                                       13           40000    5                                                       14           50000    5                                                       15           30004    0                                                       STATE 5                                                                       0            00100    1                                                       1            00200    1                                                       2            00300    1                                                       3            00400    1                                                       4            00500    1                                                       5            00100    0                                                       6            00200    0                                                       7            00300    0                                                       8            00400    0                                                       9            00500    0                                                       10           00100    2                                                       11           00200    2                                                       12           00300    2                                                       13           00400    2                                                       14           00500    2                                                       15           40003    0                                                       ______________________________________                                    

To further illustrate the operation of symbol encoder 304, consider anexample input data stream x as illustrated in Table 2. In this example,assume the encoder 304 starts in state 5 and that the first input databit set x_(i) . . . x_(i+3) is `1011`. Referring to Table 1 for state 5,row where x_(i) . . . x_(i+3) =`1011` indicates that encoder 304 outputssymbol `00200` and transitions to state 2.

FIG. 5 is a diagram further illustrating the example. FIG. 5 illustratesa current state 508 and a new state 512 for the example input datastream provided in Table 2. Referring to FIG. 5 and state machine 400,given the input data stream illustrated in Table 2, for each input databit set x_(i) . . . x_(i+3), encoder 304 transitions from a currentstate 508 to a new state 512 and produces an output symbol set y_(i) . .. y_(i+4). FIG. 5 illustrates the example for 12 data bits x of theinput data stream while Table 2 is an example for 12 data bits x.

                  TABLE 2                                                         ______________________________________                                        x    1     0      1   1   0   1    1   0   1   0    1                                                     0                                                 y    00200        02000        10000                                          z    00222        2444         55555                                          ______________________________________                                    

As described above with reference to FIG. 3, code symbols y are furthercoded by waveform encoder 308 to generate a sequence of amplitudes zused to modulate the write laser. According to one embodiment, waveformencoder 308 is a modulo six encoder that, for a given time, determinesthe waveform amplitude z_(i) by

    z.sub.i =(z.sub.i-1 +y.sub.i)mod M

Note that z is a transformed version of y, where the difference (mod M)between waveform amplitudes z_(i) and z_(i-1) is the coded symbol y_(i).Thus, in this embodiment, each new code symbol y_(i) is modulo six addedto the previous waveform amplitude z_(i-1) to result in the currentwaveform amplitude z_(i). In following the example described above andillustrated in FIG. 5 and Table 2, the code symbols y are encoded bywaveform encoder 308 to waveform amplitudes z, as illustrated in Table2.

To briefly summarize the encoding process, input digital data bits x arefirst encoded using an M=6 (3,6) symbol encoder to produce code symbolsy at M=6 levels. Code symbols y are then encoded by waveform encoder 308to produce waveform amplitudes z. According to the current code, M=6amplitudes (illustrated in the above examples as 0-5) are possible.These amplitudes are written to the media by the write laser asillustrated in FIG. 3.

6. Decoder

In order to recover the original data bits x from the amplitudes zstored on the media (or transmitted across the communications channel) adecoder is implemented. In one embodiment, the decoder uses a stateindependent lookup table to decode amplitude levels z read from thedisk. In this embodiment, the decoder is a sliding block decoder, wherea sliding window is used to decode amplitudes read from the disk.

FIG. 6 is a block diagram illustrating the decoder. As illustrated inFIG. 6, decoder 212 is comprised of a waveform decoder 604 and a slidingblock decoder 608. Waveform decoder 604 receives the signal amplitudesz' (multi-level) from the media and converts them to a sequence ofdigital code symbols y'. Sliding block decoder 608 performs a tablelookup to convert output code symbols y' into output data bits x'. Notethat in an error free environment, output code symbols y' correspondidentically to input code symbols y and output data bits x' correspondidentically to input data bits x.

Any of a number of different techniques can be implemented to readwaveform amplitudes z off of the media to provide the signal amplitudesz' to waveform decoder 604. It should be noted that the actual readscheme implemented is not important to the invention as long as data areread accurately.

As stated above, the purpose of waveform decoder 604 is to decode signalamplitudes z' to recover the actual code symbols y'. Waveform decoderconverts a sequence of amplitudes z'=(z'₀, z'₁, . . . , z'_(N-1)) wherez'_(i) ε[0,A], for some real number A, to a sequence of code symbolsy'=(y'₀, y'₁, . . . , y'_(N-1)).

The operation of waveform decoder 604 is now described. For a given timei, the code symbol y'_(i) is determined by

    y'.sub.i =(z'.sub.i -z'.sub.i-1)mod M

According to this technique, each output symbol y' is determined asbeing the modulo M difference between the current amplitude waveformz'_(i) and the previous amplitude waveform z'_(i-1). This decodingessentially undoes the coding performed by waveform encoder 308.Specifically, for M=6 (d,k) codes, such as the M=6 (3,6) code describedabove in Section 5, the decoding is implemented using a modulo sixdifference.

6.1 Sliding Block Decoder

The purpose of sliding block decoder 608 is to convert the sequence ofcode symbols y' into a sequence of data bits x' that coincide with inputdata bits x. In a preferred embodiment, the decoder is a stateindependent lookup table. The size of the lookup table is dependent onthe specific code implemented. Therefore, the design of encoder 304affects the size of the lookup table implemented.

Sliding block decoder 608 is illustrated in FIG. 7. Sliding blockdecoder comprises a sliding window 704 to decode the code symbols y' toarrive at output data bits x'. Whereas encoder 304 accepts one data bitset x_(i) . . . x_(i+3) and generates one code symbol set y_(i) . . .y_(i+4) therefrom, sliding block decoder 608 must look at multiple codesymbols y' to decode one data bit set. Specifically, for the encoderdescribed above with reference to Table 1, sliding block decoder 608requires a block of ten code symbols y_(i) ' to uniquely decode one databit set x_(i) ' . . . x_(i+3) '.

The actual size of sliding window 704 is determined during code design.An optimally sized sliding window 704 is large enough such that thesymbols y' within sliding window 704 unambiguously define the correctoutput bit set x' without being so large that unneeded code symbols y'are included therein. In other words, the window size is chosen as thesmallest window which guarantees unique decodability.

With the use of a sliding window 704 to decode the data, knowledge ofstate information is not required. In fact, the contents of slidingwindow 704 at any given time contain sufficient information such thatstate information can be determined therefrom. Thus, sliding blockdecoder 608 is computationally less complex than conventional decoders;more importantly, the sliding block decoder limits the propagation oferrors.

Sliding window 704 actually represents the present and future. The codesymbols y' actually being decoded to generate data bits x' represent thepresent. Future symbols y' are those that occur after the presentsymbols. In FIG. 7, the present is represented by `02000` and the futureby `10000`.

Note that sliding block decoders are well known for decoding binarydata. One well known technique for implementing sliding block decoderswith binary data is the Adler-Coppersmith-Hassner technique disclosed inU.S. Pat. No. 4,413,251. Another, related technique is disclosed in U.S.Pat. No. 4,882,583 to Dimitri et al. According to these techniques, thenumber of past symbols required in the window is fixed based on the codedesign. The number of future symbols should be maintained as small aspossible. These goals apply to the M-ary sliding block decoder as well.

The lookup table contains a plurality of entries. In one embodiment,each entry contains a possible sequence of N code symbols y', where N isthe size of sliding window 704. In alternative embodiments, each entryof the lookup table is addressed by (directly, indirectly or via adecoding scheme) one of the possible sequences of code symbols.

Based on the specific design of coder 304, there are a limited number ofpossible occurrences of N code symbols y'. The lookup table comprises asufficient number of entries such that there is one entry for each ofthe possible occurrences of N code symbols. As stated above, N is chosensuch that for each sequence of N code symbols y' an output bit set x' isunambiguously defined.

For the encoder 304 described above with reference to Table 1, thepreferred lookup table has 645 entries and is illustrated in Table 3.For each entry of ten code symbols y', there is an output bit set x'.Thus, to decode code symbols y', ten consecutive code symbols y' areloaded into sliding window 704. The entry corresponding to those tencode symbols y' is located in the lookup table and the correspondingdata bit set x' is output. To determine the next output data bit set x',sliding window 704 is `slid` one code symbol set y' into the future(i.e., in one embodiment, a next code symbol set y' is shifted intowindow 704 and the oldest shifted out) and the lookup process isrepeated. This sliding process continues as long as code symbols y' areprovided to sliding block decoder 608.

In one embodiment, the contents of window 704 are real-valued and,therefore, the table entry retrieved is the entry that is closest insquared Euclidean distance. Specifically, for a given window w=(w₁, . .. ,w₁₀), the distance d_(j) for each table entry t_(j) is computed as:##EQU1## where, t_(ji) is the i'th component of the j'th table entry.The window w is then decoded to the table entry with the minimumdistance d_(j).

Other embodiments are contemplated where the contents of window 704 areused as an address or used to generate an address of an entry in amemory, where the contents of that entry contain the appropriate outputdata bit set x'.

The complexity of the decoding process can be reduced significantly bymaking hard decisions regarding read signal amplitudes. Specifically, inone embodiment, the read signal amplitudes z' are rounded-off orquantized to be one of the six permissible amplitude levels. Even thoughthis results in a decrease in the performance of the decoder it cansignificantly reduce its complexity: that is, the table can be a truelookup table requiring no distance calculations.

It should be noted that at the beginning and the end of a data stream,there is a period of time during which window 704 is not full.

                  TABLE 3                                                         ______________________________________                                        Sequence                                                                      of Code        Sequence of Code Sequence of Code                              Symbols x'     Symbols     x'   Symbols   x'                                  ______________________________________                                        0000001000                                                                            0000   0001000100  1000 0020000100                                                                              0001                                0000002000                                                                            0000   0001000200  1000 0020000200                                                                              0001                                0000003000                                                                            0000   0001000300  1000 0020000300                                                                              0001                                0000004000                                                                            0000   0001000400  1000 0020000400                                                                              0001                                0000005000                                                                            0000   0001000500  1000 0020000500                                                                              0001                                0000030003                                                                            0000   0001000004  1000 0020000004                                                                              0001                                0000010000                                                                            0001   0002000100  1001 0030000100                                                                              0010                                0000020000                                                                            0001   0002000200  1001 0030000200                                                                              0010                                0000030000                                                                            0001   0002000300  1001 0030000300                                                                              0010                                0000040000                                                                            0001   0002000400  1001 0030000400                                                                              0010                                0000050000                                                                            0001   0002000500  1001 0030000500                                                                              0010                                0000030004                                                                            0001   0002000004  1001 0030000004                                                                              0010                                0000000100                                                                            0010   0003000100  1010 0040000100                                                                              0011                                0000000200                                                                            0010   0003000200  1010 0040000200                                                                              0011                                0000000300                                                                            0010   0003000300  1010 0040000300                                                                              0011                                0000000400                                                                            0010   0003000400  1010 0040000400                                                                              0011                                0000000500                                                                            0010   0003000500  1010 0040000500                                                                              0011                                0000040003                                                                            0010   0003000004  1010 0040000004                                                                              0011                                0001000000                                                                            0011   0004000100  1011 0050000100                                                                              0100                                0001000010                                                                            0011   0004000200  1011 0050000200                                                                              0100                                0001000020                                                                            0011   0004000300  1011 0050000300                                                                              0100                                0001000030                                                                            0011   0004000400  1011 0050000400                                                                              0100                                0001000040                                                                            0011   0004000500  1011 0050000500                                                                              0100                                0001000050                                                                            0011   0004000004  1011 0050000004                                                                              0100                                0001000001                                                                            0011   0005000100  1100 0010000000                                                                              0101                                0001000003                                                                            0011   0005000200  1100 0010000010                                                                              0101                                0001000005                                                                            0011   0005000300  1100 0010000020                                                                              0101                                0002000000                                                                            0100   0005000400  1100 0010000030                                                                              0101                                0002000010                                                                            0100   0005000500  1100 0010000040                                                                              0101                                0002000020                                                                            0100   0005000004  1100 0010000050                                                                              0101                                0002000030                                                                            0100   0000100010  1101 0010000001                                                                              0101                                0002000040                                                                            0100   0000100010  1101 0010000003                                                                              0101                                0002000050                                                                            0100   0000100020  1101 0010000005                                                                              0101                                0002000001                                                                            0100   0000100030  1101 0020000000                                                                              0110                                0002000003                                                                            0100   0000100040  1101 0020000010                                                                              0110                                0002000005                                                                            0100   0000100050  1101 0020000020                                                                              0110                                0003000000                                                                            0101   0000100001  1101 0020000030                                                                              0110                                0003000010                                                                            0101   0000100003  1101 0020000040                                                                              0110                                0003000020                                                                            0101   0000100005  1101 0020000050                                                                              0110                                0003000030                                                                            0101   0000300000  1110 0020000001                                                                              0110                                0003000040                                                                            0101   0000300010  1110 0020000003                                                                              0110                                0003000050                                                                            0101   0000300020  1110 0020000005                                                                              0110                                0003000001                                                                            0101   0000300030  1110 0030000000                                                                              0111                                0003000003                                                                            0101   0000300040  1110 0030000010                                                                              0111                                0003000005                                                                            0101   0000300050  1110 0030000020                                                                              0111                                0004000000                                                                            0110   0000300001  1110 0030000030                                                                              0111                                0004000010                                                                            0110   0000300003  1110 0030000040                                                                              0111                                0004000020                                                                            0110   0000300005  1110 0030000050                                                                              0111                                0004000030                                                                            0110   0000500000  1111 0030000001                                                                              0111                                0004000040                                                                            0110   0000500010  1111 0030000003                                                                              0111                                0004000050                                                                            0110   0000500020  1111 0030000005                                                                              0111                                0004000001                                                                            0110   0000500030  1111 0040000000                                                                              1000                                0004000003                                                                            0110   0000500040  1111 0040000010                                                                              1000                                0004000005                                                                            0110   0000500050  1111 0040000020                                                                              1000                                0005000000                                                                            0111   0000500001  1111 0040000030                                                                              1000                                0005000010                                                                            0111   0000500003  1111 0040000040                                                                              1000                                0005000020                                                                            0111   0000500005  1111 0040000050                                                                              1000                                0005000030                                                                            0111   0010000100  0000 0040000001                                                                              1000                                0005000040                                                                            0111   0010000200  0000 0040000003                                                                              1000                                0005000050                                                                            0111   0010000300  0000 0040000005                                                                              1000                                0005000001                                                                            0111   0010000400  0000 0050000000                                                                              1001                                0003000003                                                                            0111   0010000500  0000 0050000010                                                                              1001                                0005000005                                                                            0111   0010000004  0000 0050000020                                                                              1001                                0050000030                                                                            1001   0400001000  0011 0400000400                                                                              1101                                0050000040                                                                            1001   0400002000  0011 0400000500                                                                              1101                                0050000050                                                                            1001   0400003000  0011 0400040003                                                                              1101                                0050000001                                                                            1001   0400004000  0011 0500000100                                                                              1110                                0050000003                                                                            1001   0400005000  0011 0500000200                                                                              1110                                0050000005                                                                            1001   0400030003  0011 0500000300                                                                              1110                                0010001000                                                                            1010   0500001000  0100 0500000400                                                                              1110                                0010002000                                                                            1010   0500002000  0100 0500000500                                                                              1110                                0010003000                                                                            1010   0500003000  0100 0500040003                                                                              1110                                0010004000                                                                            1010   0500004000  0100 0000200000                                                                              1111                                0010005000                                                                            1010   0500005000  0100 0000200010                                                                              1111                                0010000002                                                                            1010   0500030003  0100 0000200020                                                                              1111                                0020001000                                                                            1011   0100010000  0101 0000200030                                                                              1111                                0020002000                                                                            1011   0100020000  0101 0000200040                                                                              1111                                0020003000                                                                            1011   0100030000  0101 0000200050                                                                              1111                                0020004000                                                                            1011   0100040000  0101 0000200001                                                                              1111                                0020005000                                                                            1011   0100050000  0101 0000200003                                                                              1111                                0020000002                                                                            1011   0100030004  0101 0000200005                                                                              1111                                0030001000                                                                            1100   0200010000  0110 0100001000                                                                              0000                                0030002000                                                                            1100   0200020000  0110 0100002000                                                                              0000                                0030003000                                                                            1100   0200030000  0110 0100003000                                                                              0000                                0030004000                                                                            1100   0200040000  0110 0100004000                                                                              0000                                0030005000                                                                            1100   0200050000  0110 0100005000                                                                              0000                                0030000002                                                                            1100   0200030004  0110 0100030003                                                                              0000                                0040001000                                                                            1101   0300010000  0111 0200001000                                                                              0001                                0040002000                                                                            1101   0300020000  0111 0200002000                                                                              0001                                0040003000                                                                            1101   0300030000  0111 0200003000                                                                              0001                                0040004000                                                                            1101   0300040000  0111 0200004000                                                                              0001                                0040005000                                                                            1101   0300050000  0111 0200005000                                                                              0001                                0040000002                                                                            1101   0300030004  0111 0200030003                                                                              0001                                0050001000                                                                            1110   0400010000  1000 0300001000                                                                              0010                                0050002000                                                                            1110   0400020000  1000 0300002000                                                                              0010                                0050003000                                                                            1110   0400030000  1000 0300003000                                                                              0010                                0050004000                                                                            1110   0400040000  1000 0300004000                                                                              0010                                0050005000                                                                            1110   0400050000  1000 0300005000                                                                              0010                                0050000002                                                                            1110   0400030004  1000 0300030003                                                                              0010                                0000400000                                                                            1111   0500010000  1001 0400001000                                                                              0011                                0000400010                                                                            1111   0500020000  1001 0400002000                                                                              0011                                0000400020                                                                            1111   0500030000  1001 0400003000                                                                              0011                                0000400030                                                                            1111   0500040000  1001 0400004000                                                                              0011                                0000400040                                                                            1111   0500050000  1001 0400005000                                                                              0011                                0000400050                                                                            1111   0500030004  1001 0400030003                                                                              0011                                0000400001                                                                            1111   0100000100  1010 0500001000                                                                              0100                                0000400003                                                                            1111   0100000200  1010 0500002000                                                                              0100                                0000400005                                                                            1111   0100000300  1010 0500003000                                                                              0100                                0100001000                                                                            0000   0100000400  1010 0500004000                                                                              0100                                0100002000                                                                            0000   0100000500  1010 0500005000                                                                              0100                                0100003000                                                                            0000   0100040003  1010 0500030003                                                                              0100                                0100004000                                                                            0000   0200000100  1011 0100010000                                                                              0101                                0100005000                                                                            0000   0200000200  1011 0100020000                                                                              0101                                0100030003                                                                            0000   0200000300  1011 0100030000                                                                              0101                                0200001000                                                                            0001   0200000400  1011 0100040000                                                                              0101                                0200002000                                                                            0001   0200000500  1011 0100050000                                                                              0101                                0200003000                                                                            0001   0200040003  1011 0100030004                                                                              0101                                0200004000                                                                            0001   0300000100  1100 0200010000                                                                              0110                                0200005000                                                                            0001   0300000200  1100 0200020000                                                                              0110                                0200030003                                                                            0001   0300000300  1100 0200030000                                                                              0110                                0300001000                                                                            0010   0300000400  1100 0200040000                                                                              0110                                0300002000                                                                            0010   0300000500  1100 0200050000                                                                              0110                                0300003000                                                                            0010   0300040003  1100 0200030004                                                                              0110                                0300004000                                                                            0010   0400000100  1101 0300010000                                                                              0111                                0306003000                                                                            0010   0400000200  1101 0300020000                                                                              0111                                0300030003                                                                            0010   0400000300  1101 0300030000                                                                              0111                                0300040000                                                                            0111   2000004000  0001 3000000100                                                                              1100                                0300050000                                                                            0111   2000005000  0001 3000000200                                                                              1100                                0300030004                                                                            0111   2000030003  0001 3000000300                                                                              1100                                0400010000                                                                            1000   3000001000  0010 3000000400                                                                              1100                                0400020000                                                                            1000   3000002000  0010 3000000500                                                                              1100                                0400030000                                                                            1000   3000003000  0010 3000040003                                                                              1100                                0400040000                                                                            1000   3000004000  0010 4000000100                                                                              1101                                0400050000                                                                            1000   3000005000  0010 4000000200                                                                              1101                                0400030004                                                                            1000   3000030003  0010 4000000300                                                                              1101                                0500010000                                                                            1001   4000001000  0011 4000000400                                                                              1101                                0500020000                                                                            1001   4000002000  0011 4000000500                                                                              1101                                0500030000                                                                            1001   4000003000  0011 4000040003                                                                              1101                                0500040000                                                                            1001   4000004000  0011 5000000100                                                                              1110                                0500050000                                                                            1001   4000005000  0011 5000000200                                                                              1110                                0500030004                                                                            1001   4000030003  0011 5000000300                                                                              1110                                0100000100                                                                            1010   5000001000  0100 5000000400                                                                              1110                                0100000200                                                                            1010   5000002000  0100 5000000500                                                                              1110                                0100000300                                                                            1010   5000003000  0100 5000040003                                                                              1110                                0100000400                                                                            1010   5000004000  0100 3000400000                                                                              1111                                0100000500                                                                            1010   5000005000  0100 3000400010                                                                              1111                                0100040003                                                                            1010   5000030003  0100 3000400020                                                                              1111                                0200000100                                                                            1011   1000010000  0101 3000400030                                                                              1111                                0200000200                                                                            1011   1000020000  0101 3000400040                                                                              1111                                0200000300                                                                            1011   1000030000  0101 3000400050                                                                              1111                                0200000400                                                                            1011   1000040000  0101 3000400001                                                                              1111                                0200000500                                                                            1011   1000050000  0101 3000400003                                                                              1111                                0200040003                                                                            1011   1000030004  0101 3000400005                                                                              1111                                0300000100                                                                            1100   2000010000  0110 0010000100                                                                              0000                                0300000200                                                                            1100   2000020000  0110 0010000200                                                                              0000                                0300000300                                                                            1100   2000030000  0110 0010000300                                                                              0000                                0300000400                                                                            1100   2000040000  0110 0010000400                                                                              0000                                0300000500                                                                            1100   2000050000  0110 0010000500                                                                              0000                                0300040003                                                                            1100   2000030004  0110 0010000004                                                                              0000                                0400000100                                                                            1101   3000010000  0111 0020000100                                                                              0001                                0400000200                                                                            1101   3000020000  0111 0020000200                                                                              0001                                0400000300                                                                            1101   3000030000  0111 0020000300                                                                              0001                                0400000400                                                                            1101   3000040000  0111 0020000400                                                                              0001                                0400000500                                                                            1101   3000050000  0111 0020000500                                                                              0001                                0400040003                                                                            1101   3000030004  0111 0020000004                                                                              0001                                0500000100                                                                            1110   4000010000  1000 0030000100                                                                              0010                                0500000200                                                                            1110   4000020000  1000 0030000200                                                                              0010                                0500000300                                                                            1110   4000030000  1000 0030000300                                                                              0010                                0500000400                                                                            1110   4000040000  1000 0030000400                                                                              0010                                0500000500                                                                            1110   4000050000  1000 0030000500                                                                              0010                                0300040003                                                                            1110   4000030004  1000 0030000004                                                                              0010                                3000300000                                                                            1111   5000010000  1001 0040000100                                                                              0011                                3000300010                                                                            1111   5000020000  1001 0040000200                                                                              0011                                3000300020                                                                            1111   5000030000  1001 0040000300                                                                              0011                                3000300030                                                                            1111   5000040000  1001 0040000400                                                                              0011                                3000300040                                                                            1111   5000050000  1001 0040000500                                                                              0011                                3000300050                                                                            1111   5000030004  1001 0040000004                                                                              0011                                3000300001                                                                            1111   1000000100  1010 0050000100                                                                              0100                                3000300003                                                                            1111   1000000200  1010 0050000200                                                                              0100                                3000300005                                                                            1111   1000000300  1010 0050000300                                                                              0100                                1000001000                                                                            0000   1000000400  1010 0050000400                                                                              0100                                1000002000                                                                            0000   1000000500  1010 0050000500                                                                              0100                                1000003000                                                                            0000   1000040003  1010 0050000004                                                                              0100                                1000004000                                                                            0000   2000000300  1011 0010000000                                                                              0101                                1000005000                                                                            0000   2000000200  1011 0010000010                                                                              0101                                1000030003                                                                            0000   2000000300  1011 0010000020                                                                              0101                                2000001000                                                                            0001   2000000400  1011 0010000030                                                                              0101                                2000002000                                                                            0001   2000000300  1011 0010000040                                                                              0101                                2000003000                                                                            0001   2000040003  1011 0010000030                                                                              0101                                0010000001                                                                            0101   0040000050  1000 0030002000                                                                              1100                                0010000003                                                                            0101   0040000001  1000 0030003000                                                                              1100                                0010000005                                                                            0101   0040000003  1000 0030004000                                                                              1100                                0020000000                                                                            0110   0040000005  1000 0030005000                                                                              1100                                0020000010                                                                            0110   0050000000  1001 0030000002                                                                              1100                                0020000020                                                                            0110   0050000010  1001 0040001000                                                                              1101                                0020000030                                                                            0110   0050000020  1001 0040002000                                                                              1101                                0020000040                                                                            0110   0050000030  1001 0040003000                                                                              1101                                0020000050                                                                            0110   0050000040  1001 0040004000                                                                              1101                                0020000001                                                                            0110   0050000050  1001 0040005000                                                                              1101                                0020000003                                                                            0110   0050000001  1001 0040000002                                                                              1101                                0020000005                                                                            0110   0050000003  1001 0050001000                                                                              1110                                0030000000                                                                            0111   0050000005  1001 0050002000                                                                              1110                                0030000010                                                                            0111   0010001000  1010 0050003000                                                                              1110                                0030000020                                                                            0111   0010002000  1010 0050004000                                                                              1110                                0030000030                                                                            0111   0010003000  1010 0050005000                                                                              1110                                0030000040                                                                            0111   0010004000  1010 0050000002                                                                              1110                                0030000050                                                                            0111   0010005000  1010 4000300000                                                                              1111                                0030000001                                                                            0111   0010000002  1010 4000300010                                                                              1111                                0030000003                                                                            0111   0020001000  1011 4000300020                                                                              1111                                0030000005                                                                            0111   0020002000  1011 4000300030                                                                              1111                                0040000000                                                                            1000   0020003000  1011 4000300040                                                                              1111                                0040000010                                                                            1000   0020004000  1011 4000300050                                                                              1111                                0040000020                                                                            1000   0020005000  1011 4000300001                                                                              1111                                0040000030                                                                            1000   0020000002  1011 4000300003                                                                              1111                                0040000040                                                                            1000   0030000003  1100 4000300005                                                                              1111                                ______________________________________                                    

7. Conclusion

While various embodiments of the present invention have been describedabove, it should be understood that they have been presented by way ofexample only, and not limitation. Thus, the breadth and scope of thepresent invention should not be limited by any of the above-describedexemplary embodiments, but should be defined only in accordance with thefollowing claims and their equivalents.

What is claimed is:
 1. A method for encoding a series of binary inputdata bits x into an M=6 run-length limited (3,6) code having a rateR=4/5, to produce a series of code symbols y, the method comprising thesteps of receiving at a six-state encoder an input data bit set x_(i) .. . x_(i+3) to be encoded into the M=6 run-length limited (3,6) code,and generating in said encoder a code symbol set y_(i) . . . y_(i+4)based on said input data bit set x_(i) . . . x_(i+3) according to thefollowing mapping table:

    ______________________________________                                        INPUT        OUTPUT   NEXT STATE                                              ______________________________________                                        STATE 0                                                                       0            00000    3                                                       1            00000    4                                                       2            00000    5                                                       3            00010    0                                                       4            00020    0                                                       5            00030    0                                                       6            00040    0                                                       7            00050    0                                                       8            00010    1                                                       9            00020    1                                                       10           00030    1                                                       11           00040    1                                                       12           00050    1                                                       13           00001    0                                                       14           00003    0                                                       15           00005    0                                                       STATE 1                                                                       0            00100    1                                                       1            00200    1                                                       2            00300    1                                                       3            00400    1                                                       4            00500    1                                                       5            00100    0                                                       6            00200    0                                                       7            00300    0                                                       8            00400    0                                                       9            00500    0                                                       10           00100    2                                                       11           00200    2                                                       12           00300    2                                                       13           00400    2                                                       14           00500    2                                                       15           00004    0                                                       STATE 2                                                                       0            01000    3                                                       1            02000    3                                                       2            03000    3                                                       3            04000    3                                                       4            05000    3                                                       5            01000    4                                                       6            02000    4                                                       7            03000    4                                                       8            04000    4                                                       9            05000    4                                                       10           01000    5                                                       11           02000    5                                                       12           03000    5                                                       13           04000    5                                                       14           05000    5                                                       15           00002    0                                                       STATE 3                                                                       0            01000    3                                                       1            02000    3                                                       2            03000    3                                                       3            04000    3                                                       4            05000    3                                                       5            01000    4                                                       6            02000    4                                                       7            03000    4                                                       8            04000    4                                                       9            05000    4                                                       10           01000    5                                                       11           02000    5                                                       12           03000    5                                                       13           04000    5                                                       14           05000    5                                                       15           30003    0                                                       STATE 4                                                                       0            10000    3                                                       1            20000    3                                                       2            30000    3                                                       3            40000    3                                                       4            50000    3                                                       5            10000    4                                                       6            20000    4                                                       7            30000    4                                                       8            40000    4                                                       9            50000    4                                                       10           10000    5                                                       11           20000    5                                                       12           30000    5                                                       13           40000    5                                                       14           50000    5                                                       15           30004    0                                                       STATE 5                                                                       0            00100    1                                                       1            00200    1                                                       2            00300    1                                                       3            00400    1                                                       4            00500    1                                                       5            00100    0                                                       6            00200    0                                                       7            00300    0                                                       8            00400    0                                                       9            00500    0                                                       10           00100    2                                                       11           00200    2                                                       12           00300    2                                                       13           00400    2                                                       14           00500    2                                                       15           40003    0                                                       ______________________________________                                    

wherein said code symbol set y_(i) . . . y_(i+4) is generated based onthe input data bit set x_(i) . . . x_(i+3) and the current state of saidsix-state encoder when said data bit set x_(i) . . . x_(i+3) isreceived.
 2. A method for encoding a series of binary input data bits xinto an M-ary run-length limited (3,6) code having a rate R=4/5 toproduce a series of code symbols y, each code symbol being at one of Mlevels, where M>2 and each pair of non-zero code symbols having aminimum of three and a maximum of six zeroes therebetween, the methodcomprising the steps of receiving at a six-state encoder an input databit set x_(i) . . . x_(i+3) to be encoded into the M-ary run-lengthlimited (3,6) code, and generating in said encoder a code symbol sety_(i) . . . y_(i+4) based on said input data bit set x_(i) . . . x_(i+3)according to the following mapping table:

    ______________________________________                                        INPUT        OUTPUT   NEXT STATE                                              ______________________________________                                        STATE 0                                                                       0            00000    3                                                       1            00000    4                                                       2            00000    5                                                       3            00010    0                                                       4            00020    0                                                       5            00030    0                                                       6            00040    0                                                       7            00050    0                                                       8            00010    1                                                       9            00020    1                                                       10           00030    1                                                       11           00040    1                                                       12           00050    1                                                       13           00001    0                                                       14           00003    0                                                       15           00005    0                                                       STATE 1                                                                       0            00100    1                                                       1            00200    1                                                       2            00300    1                                                       3            00400    1                                                       4            00500    1                                                       5            00100    0                                                       6            00200    0                                                       7            00300    0                                                       8            00400    0                                                       9            00500    0                                                       10           00100    2                                                       11           00200    2                                                       12           00300    2                                                       13           00400    2                                                       14           00500    2                                                       15           00004    0                                                       STATE 2                                                                       0            01000    3                                                       1            02000    3                                                       2            03000    3                                                       3            04000    3                                                       4            05000    3                                                       5            01000    4                                                       6            02000    4                                                       7            03000    4                                                       8            04000    4                                                       9            05000    4                                                       10           01000    5                                                       11           02000    5                                                       12           03000    5                                                       13           04000    5                                                       14           05000    5                                                       15           00002    0                                                       STATE 3                                                                       0            01000    3                                                       1            02000    3                                                       2            03000    3                                                       3            04000    3                                                       4            05000    3                                                       5            01000    4                                                       6            02000    4                                                       7            03000    4                                                       8            04000    4                                                       9            05000    4                                                       10           01000    5                                                       11           02000    5                                                       12           03000    5                                                       13           04000    5                                                       14           05000    5                                                       15           30003    0                                                       STATE 4                                                                       0            10000    3                                                       1            20000    3                                                       2            30000    3                                                       3            40000    3                                                       4            50000    3                                                       5            10000    4                                                       6            20000    4                                                       7            30000    4                                                       8            40000    4                                                       9            50000    4                                                       10           10000    5                                                       11           20000    5                                                       12           30000    5                                                       13           40000    5                                                       14           50000    5                                                       15           30004    0                                                       STATE 5                                                                       0            00100    1                                                       1            00200    1                                                       2            00300    1                                                       3            00400    1                                                       4            00500    1                                                       5            00100    0                                                       6            00200    0                                                       7            00300    0                                                       8            00400    0                                                       9            00500    0                                                       10           00100    2                                                       11           00200    2                                                       12           00300    2                                                       13           00400    2                                                       14           00500    2                                                       15           40003    0                                                       ______________________________________                                    

wherein said code symbol set y_(i) . . . y_(i+4) is generated based onthe input data bit set x_(i) . . . x_(i+3) and the current state of saidsix-state encoder when said data bit set x_(i) . . . x_(i+3) isreceived.
 3. A method for converting binary input data bits into aseries of waveform amplitudes each amplitude being at one of M=6 levels,the method comprising the steps of:encoding the binary input data bitsinto an M=6 (3,6) code having a rate R=4/5 to produce a series of codesymbols, each code symbol being at one of M levels, and each pair ofnon-zero code symbols having a minimum of three and a maximum of sixzeroes therebetween, said encoding step comprising the step ofgenerating a code symbol set y_(i) . . . y_(i+4) for each input data bitset x_(i) . . . x_(i+3) according to the following mapping table:

    ______________________________________                                        INPUT        OUTPUT   NEXT STATE                                              ______________________________________                                        STATE 0                                                                       0            00000    3                                                       1            00000    4                                                       2            00000    5                                                       3            00010    0                                                       4            00020    0                                                       5            00030    0                                                       6            00040    0                                                       7            00050    0                                                       8            00010    1                                                       9            00020    1                                                       10           00030    1                                                       11           00040    1                                                       12           00050    1                                                       13           00001    0                                                       14           00003    0                                                       15           00005    0                                                       STATE 1                                                                       0            00100    1                                                       1            00200    1                                                       2            00300    1                                                       3            00400    1                                                       4            00500    1                                                       5            00100    0                                                       6            00200    0                                                       7            00300    0                                                       8            00400    0                                                       9            00500    0                                                       10           00100    2                                                       11           00200    2                                                       12           00300    2                                                       13           00400    2                                                       14           00500    2                                                       15           00004    0                                                       STATE 2                                                                       0            01000    3                                                       1            02000    3                                                       2            03000    3                                                       3            04000    3                                                       4            05000    3                                                       5            01000    4                                                       6            02000    4                                                       7            03000    4                                                       8            04000    4                                                       9            05000    4                                                       10           01000    5                                                       11           02000    5                                                       12           03000    5                                                       13           04000    5                                                       14           05000    5                                                       15           00002    0                                                       STATE 3                                                                       0            01000    3                                                       1            02000    3                                                       2            03000    3                                                       3            04000    3                                                       4            05000    3                                                       5            01000    4                                                       6            02000    4                                                       7            03000    4                                                       8            04000    4                                                       9            05000    4                                                       10           01000    5                                                       11           02000    5                                                       12           03000    5                                                       13           04000    5                                                       14           05000    5                                                       15           30003    0                                                       STATE 4                                                                       0            10000    3                                                       1            20000    3                                                       2            30000    3                                                       3            40000    3                                                       4            50000    3                                                       5            10000    4                                                       6            20000    4                                                       7            30000    4                                                       8            40000    4                                                       9            50000    4                                                       10           10000    5                                                       11           20000    5                                                       12           30000    5                                                       13           40000    5                                                       14           50000    5                                                       15           30004    0                                                       STATE 5                                                                       0            00100    1                                                       1            00200    1                                                       2            00300    1                                                       3            00400    1                                                       4            00500    1                                                       5            00100    0                                                       6            00200    0                                                       7            00300    0                                                       8            00400    0                                                       9            00500    0                                                       10           00100    2                                                       11           00200    2                                                       12           00300    2                                                       13           00400    2                                                       14           00500    2                                                       15           40003    0                                                       ______________________________________                                    

wherein said code symbol set y_(i) . . . y_(i+4) is generated based onthe input data bit set x_(i) . . . x_(i+3), and the current state ofsaid six-state encoder when said data bit set x_(i) . . . x_(i+3) isreceived; and generating in a waveform encoder waveform signalamplitudes based on said code symbols, wherein each said waveform signalamplitude is generated by modulo six addition of a current code symbolwith a previous waveform signal amplitude.
 4. In a data storage systemhaving storage media capable of storing data at multiple levels, amethod for converting binary input data bits into a series of waveformamplitudes each amplitude being at one of M=6 levels and storing thewaveform amplitudes on the storage medium, the method comprising thesteps of:encoding the binary input data bits into an M=6 (3,6) codehaving a rate R=4/5 to produce a series of code symbols, each codesymbol being at one of M levels, and each pair of non-zero code symbolshaving a minimum of three and a maximum of six zeroes therebetween, saidencoding step comprising the step of generating a code symbol set y_(i). . . y_(i+4) for each input data bit set x_(i) . . . x_(i+3) accordingto the following mapping table:

    ______________________________________                                        INPUT        OUTPUT   NEXT STATE                                              ______________________________________                                        STATE 0                                                                       0            00000    3                                                       1            00000    4                                                       2            00000    5                                                       3            00010    0                                                       4            00020    0                                                       5            00030    0                                                       6            00040    0                                                       7            00050    0                                                       8            00010    1                                                       9            00020    1                                                       10           00030    1                                                       11           00040    1                                                       12           00050    1                                                       13           00001    0                                                       14           00003    0                                                       15           00005    0                                                       STATE 1                                                                       0            00100    1                                                       1            00200    1                                                       2            00300    1                                                       3            00400    1                                                       4            00500    1                                                       5            00100    0                                                       6            00200    0                                                       7            00300    0                                                       8            00400    0                                                       9            00500    0                                                       10           00100    2                                                       11           00200    2                                                       12           00300    2                                                       13           00400    2                                                       14           00500    2                                                       15           00004    0                                                       STATE 2                                                                       0            01000    3                                                       1            02000    3                                                       2            03000    3                                                       3            04000    3                                                       4            05000    3                                                       5            01000    4                                                       6            02000    4                                                       7            03000    4                                                       8            04000    4                                                       9            05000    4                                                       10           01000    5                                                       11           02000    5                                                       12           03000    5                                                       13           04000    5                                                       14           05000    5                                                       15           00002    0                                                       STATE 3                                                                       0            01000    3                                                       1            02000    3                                                       2            03000    3                                                       3            04000    3                                                       4            05000    3                                                       5            01000    4                                                       6            02000    4                                                       7            03000    4                                                       8            04000    4                                                       9            05000    4                                                       10           01000    5                                                       11           02000    5                                                       12           03000    5                                                       13           04000    5                                                       14           05000    5                                                       15           30003    0                                                       STATE 4                                                                       0            10000    3                                                       1            20000    3                                                       2            30000    3                                                       3            40000    3                                                       4            50000    3                                                       5            10000    4                                                       6            20000    4                                                       7            30000    4                                                       8            40000    4                                                       9            50000    4                                                       10           10000    5                                                       11           20000    5                                                       12           30000    5                                                       13           40000    5                                                       14           50000    5                                                       15           30004    0                                                       STATE 5                                                                       0            00100    1                                                       1            00200    1                                                       2            00300    1                                                       3            00400    1                                                       4            00500    1                                                       5            00100    0                                                       6            00200    0                                                       7            00300    0                                                       8            00400    0                                                       9            00500    0                                                       10           00100    2                                                       11           00200    2                                                       12           00300    2                                                       13           00400    2                                                       14           00500    2                                                       15           40003    0                                                       ______________________________________                                    

wherein said code symbol set y_(i) . . . y_(i+4) is generated based onthe input data bit set x_(i) . . . x_(i+3) and the current state of saidsix-state encoder when said data bit set x_(i) . . . x_(i+3) isreceived; generating in a waveform encoder waveform signal amplitudesbased on said code symbols, wherein each said waveform signal amplitudeis generated by modulo six addition of a current code symbol with aprevious waveform signal amplitude; and modulating a write signal withsaid waveform signal amplitudes to write a series of features to thestorage medium, each feature being at a level corresponding to awaveform signal amplitude.
 5. The method according to claim 4, whereinsaid waveform signal amplitudes modulate a write laser and wherein saidmodulated write laser writes features onto the storage medium.
 6. Themethod according to claim 4, further comprising the steps of:reading thestorage medium to recover output waveform signal amplitudes; convertingsaid output waveform signal amplitudes into output code symbols, whereineach output code symbol is at one of six levels; and decoding saidoutput code symbols to obtain output data bits, wherein said output databits correspond to the digital input data.
 7. The method of claim 6,wherein said step of decoding comprises the steps of:identifying with asliding window a sequence of code symbols that represents a given codesymbol set; and in a table comprising a number of entries correspondingto a number of possible unique sequences of code symbols, each entryidentified by one of said possible unique sequences of code symbols, andwherein each entry identifies an output data bit set that is a decodeddata bit set for the code symbol set represented by the sequence of codesymbols that identifies that entry, looking up with said identifiedsequence of code symbols the output data bit for said given code symbol.8. The method according to claim 7, wherein said lookup table providesan output bit set x' for each sequence of code symbols y' according tothe following table:

    ______________________________________                                        Sequence                                                                      of Code        Sequence of Code Sequence of Code                              Symbols x'     Symbols     x'   Symbols   x'                                  ______________________________________                                        0000001000                                                                            0000   0001000100  1000 0020000100                                                                              0001                                0000002000                                                                            0000   0001000200  1000 0020000200                                                                              0001                                0000003000                                                                            0000   0001000300  1000 0020000300                                                                              0001                                0000004000                                                                            0000   0001000400  1000 0020000400                                                                              0001                                0000005000                                                                            0000   0001000500  1000 0020000500                                                                              0001                                0000030003                                                                            0000   0001000004  1000 0020000004                                                                              0001                                0000010000                                                                            0001   0002000100  1001 0030000100                                                                              0010                                0000020000                                                                            0001   0002000200  1001 0030000200                                                                              0010                                0000030000                                                                            0001   0002000300  1001 0030000300                                                                              0010                                0000040000                                                                            0001   0002000400  1001 0030000400                                                                              0010                                0000050000                                                                            0001   0002000500  1001 0030000500                                                                              0010                                0000030004                                                                            0001   0002000004  1001 0030000004                                                                              0010                                0000000100                                                                            0010   0003000100  1010 0040000100                                                                              0011                                0000000200                                                                            0010   0003000200  1010 0040000200                                                                              0011                                0000000300                                                                            0010   0003000300  1010 0040000300                                                                              0011                                0000000400                                                                            0010   0003000400  1010 0040000400                                                                              0011                                0000000500                                                                            0010   0003000500  1010 0040000500                                                                              0011                                0000040003                                                                            0010   0003000004  1010 0040000004                                                                              0011                                0001000000                                                                            0011   0004000100  1011 0050000100                                                                              0100                                0001000010                                                                            0011   0004000200  1011 0050000200                                                                              0100                                0001000020                                                                            0011   0004000300  1011 0050000300                                                                              0100                                0001000030                                                                            0011   0004000400  1011 0050000400                                                                              0100                                0001000040                                                                            0011   0004000500  1011 0050000500                                                                              0100                                0001000050                                                                            0011   0004000004  1011 0050000004                                                                              0100                                0001000001                                                                            0011   0005000100  1100 0010000000                                                                              0101                                0001000003                                                                            0011   0005000200  1100 0010000010                                                                              0101                                0001000005                                                                            0011   0005000300  1100 0010000020                                                                              0101                                0002000000                                                                            0100   0005000400  1100 0010000030                                                                              0101                                0002000010                                                                            0100   0005000500  1100 0010000040                                                                              0101                                0002000020                                                                            0100   0005000004  1100 0010000050                                                                              0101                                0002000030                                                                            0100   0000100010  1101 0010000001                                                                              0101                                0002000040                                                                            0100   0000100010  1101 0010000003                                                                              0101                                0002000050                                                                            0100   0000100020  1101 0010000005                                                                              0101                                0002000001                                                                            0100   0000100030  1101 0020000000                                                                              0110                                0002000003                                                                            0100   0000100040  1101 0020000010                                                                              0110                                0002000005                                                                            0100   0000100050  1101 0020000020                                                                              0110                                0003000000                                                                            0101   0000100001  1101 0020000030                                                                              0110                                0003000010                                                                            0101   0000100003  1101 0020000040                                                                              0110                                0003000020                                                                            0101   0000100005  1101 0020000050                                                                              0110                                0003000030                                                                            0101   0000300000  1110 0020000001                                                                              0110                                0003000040                                                                            0101   0000300010  1110 0020000003                                                                              0110                                0003000050                                                                            0101   0000300020  1110 0020000005                                                                              0110                                0003000001                                                                            0101   0000300030  1110 0030000000                                                                              0111                                0003000003                                                                            0101   0000300040  1110 0030000010                                                                              0111                                0003000005                                                                            0101   0000300050  1110 0030000020                                                                              0111                                0004000000                                                                            0110   0000300001  1110 0030000030                                                                              0111                                0004000010                                                                            0110   0000300003  1110 0030000040                                                                              0111                                0004000020                                                                            0110   0000300005  1110 0030000050                                                                              0111                                0004000030                                                                            0110   0000500000  1111 0030000001                                                                              0111                                0004000040                                                                            0110   0000500010  1111 0030000003                                                                              0111                                0004000050                                                                            0110   0000500020  1111 0030000005                                                                              0111                                0004000001                                                                            0110   0000500030  1111 0040000000                                                                              1000                                0004000003                                                                            0110   0000500040  1111 0040000010                                                                              1000                                0004000005                                                                            0110   0000500050  1111 0040000020                                                                              1000                                0005000000                                                                            0111   0000500001  1111 0040000030                                                                              1000                                0005000010                                                                            0111   0000500003  1111 0040000040                                                                              1000                                0005000020                                                                            0111   0000500005  1111 0040000050                                                                              1000                                0005000030                                                                            0111   0010000100  0000 0040000001                                                                              1000                                0005000040                                                                            0111   0010000200  0000 0040000003                                                                              1000                                0005000050                                                                            0111   0010000300  0000 0040000005                                                                              1000                                0005000001                                                                            0111   0010000400  0000 0050000000                                                                              1001                                0003000003                                                                            0111   0010000500  0000 0050000010                                                                              1001                                0005000005                                                                            0111   0010000004  0000 0050000020                                                                              1001                                0050000030                                                                            1001   0400001000  0011 0400000400                                                                              1101                                0050000040                                                                            1001   0400002000  0011 0400000500                                                                              1101                                0050000050                                                                            1001   0400003000  0011 0400040003                                                                              1101                                0050000001                                                                            1001   0400004000  0011 0500000100                                                                              1110                                0050000003                                                                            1001   0400005000  0011 0500000200                                                                              1110                                0050000005                                                                            1001   0400030003  0011 0500000300                                                                              1110                                0010001000                                                                            1010   0500001000  0100 0500000400                                                                              1110                                0010002000                                                                            1010   0500002000  0100 0500000500                                                                              1110                                0010003000                                                                            1010   0500003000  0100 0500040003                                                                              1110                                0010004000                                                                            1010   0500004000  0100 0000200000                                                                              1111                                0010005000                                                                            1010   0500005000  0100 0000200010                                                                              1111                                0010000002                                                                            1010   0500030003  0100 0000200020                                                                              1111                                0020001000                                                                            1011   0100010000  0101 0000200030                                                                              1111                                0020002000                                                                            1011   0100020000  0101 0000200040                                                                              1111                                0020003000                                                                            1011   0100030000  0101 0000200050                                                                              1111                                0020004000                                                                            1011   0100040000  0101 0000200001                                                                              1111                                0020005000                                                                            1011   0100050000  0101 0000200003                                                                              1111                                0020000002                                                                            1011   0100030004  0101 0000200005                                                                              1111                                0030001000                                                                            1100   0200010000  0110 0100001000                                                                              0000                                0030002000                                                                            1100   0200020000  0110 0100002000                                                                              0000                                0030003000                                                                            1100   0200030000  0110 0100003000                                                                              0000                                0030004000                                                                            1100   0200040000  0110 0100004000                                                                              0000                                0030005000                                                                            1100   0200050000  0110 0100005000                                                                              0000                                0030000002                                                                            1100   0200030004  0110 0100030003                                                                              0000                                0040001000                                                                            1101   0300010000  0111 0200001000                                                                              0001                                0040002000                                                                            1101   0300020000  0111 0200002000                                                                              0001                                0040003000                                                                            1101   0300030000  0111 0200003000                                                                              0001                                0040004000                                                                            1101   0300040000  0111 0200004000                                                                              0001                                0040005000                                                                            1101   0300050000  0111 0200005000                                                                              0001                                0040000002                                                                            1101   0300030004  0111 0200030003                                                                              0001                                0050001000                                                                            1110   0400010000  1000 0300001000                                                                              0010                                0050002000                                                                            1110   0400020000  1000 0300002000                                                                              0010                                0050003000                                                                            1110   0400030000  1000 0300003000                                                                              0010                                0050004000                                                                            1110   0400040000  1000 0300004000                                                                              0010                                0050005000                                                                            1110   0400050000  1000 0300005000                                                                              0010                                0050000002                                                                            1110   0400030004  1000 0300030003                                                                              0010                                0000400000                                                                            1111   0500010000  1001 0400001000                                                                              0011                                0000400010                                                                            1111   0500020000  1001 0400002000                                                                              0011                                0000400020                                                                            1111   0500030000  1001 0400003000                                                                              0011                                0000400030                                                                            1111   0500040000  1001 0400004000                                                                              0011                                0000400040                                                                            1111   0500050000  1001 0400005000                                                                              0011                                0000400050                                                                            1111   0500030004  1001 0400030003                                                                              0011                                0000400001                                                                            1111   0100000100  1010 0500001000                                                                              0100                                0000400003                                                                            1111   0100000200  1010 0500002000                                                                              0100                                0000400005                                                                            1111   0100000300  1010 0500003000                                                                              0100                                0100001000                                                                            0000   0100000400  1010 0500004000                                                                              0100                                0100002000                                                                            0000   0100000500  1010 0500005000                                                                              0100                                0100003000                                                                            0000   0100040003  1010 0500030003                                                                              0100                                0100004000                                                                            0000   0200000100  1011 0100010000                                                                              0101                                0100005000                                                                            0000   0200000200  1011 0100020000                                                                              0101                                0100030003                                                                            0000   0200000300  1011 0100030000                                                                              0101                                0200001000                                                                            0001   0200000400  1011 0100040000                                                                              0101                                0200002000                                                                            0001   0200000500  1011 0100050000                                                                              0101                                0200003000                                                                            0001   0200040003  1011 0100030004                                                                              0101                                0200004000                                                                            0001   0300000100  1100 0200010000                                                                              0110                                0200005000                                                                            0001   0300000200  1100 0200020000                                                                              0110                                0200030003                                                                            0001   0300000300  1100 0200030000                                                                              0110                                0300001000                                                                            0010   0300000400  1100 0200040000                                                                              0110                                0300002000                                                                            0010   0300000500  1100 0200050000                                                                              0110                                0300003000                                                                            0010   0300040003  1100 0200030004                                                                              0110                                0300004000                                                                            0010   0400000100  1101 0300010000                                                                              0111                                0306003000                                                                            0010   0400000200  1101 0300020000                                                                              0111                                0300030003                                                                            0010   0400000300  1101 0300030000                                                                              0111                                0300040000                                                                            0111   2000004000  0001 3000000100                                                                              1100                                0300050000                                                                            0111   2000005000  0001 3000000200                                                                              1100                                0300030004                                                                            0111   2000030003  0001 3000000300                                                                              1100                                0400010000                                                                            1000   3000001000  0010 3000000400                                                                              1100                                0400020000                                                                            1000   3000002000  0010 3000000500                                                                              1100                                0400030000                                                                            1000   3000003000  0010 3000040003                                                                              1100                                0400040000                                                                            1000   3000004000  0010 4000000100                                                                              1101                                0400050000                                                                            1000   3000005000  0010 4000000200                                                                              1101                                0400030004                                                                            1000   3000030003  0010 4000000300                                                                              1101                                0500010000                                                                            1001   4000001000  0011 4000000400                                                                              1101                                0500020000                                                                            1001   4000002000  0011 4000000500                                                                              1101                                0500030000                                                                            1001   4000003000  0011 4000040003                                                                              1101                                0500040000                                                                            1001   4000004000  0011 5000000100                                                                              1110                                0500050000                                                                            1001   4000005000  0011 5000000200                                                                              1110                                0500030004                                                                            1001   4000030003  0011 5000000300                                                                              1110                                0100000100                                                                            1010   5000001000  0100 5000000400                                                                              1110                                0100000200                                                                            1010   5000002000  0100 5000000500                                                                              1110                                0100000300                                                                            1010   5000003000  0100 5000040003                                                                              1110                                0100000400                                                                            1010   5000004000  0100 3000400000                                                                              1111                                0100000500                                                                            1010   5000005000  0100 3000400010                                                                              1111                                0100040003                                                                            1010   5000030003  0100 3000400020                                                                              1111                                0200000100                                                                            1011   1000010000  0101 3000400030                                                                              1111                                0200000200                                                                            1011   1000020000  0101 3000400040                                                                              1111                                0200000300                                                                            1011   1000030000  0101 3000400050                                                                              1111                                0200000400                                                                            1011   1000040000  0101 3000400001                                                                              1111                                0200000500                                                                            1011   1000050000  0101 3000400003                                                                              1111                                0200040003                                                                            1011   1000030004  0101 3000400005                                                                              1111                                0300000100                                                                            1100   2000010000  0110 0010000100                                                                              0000                                0300000200                                                                            1100   2000020000  0110 0010000200                                                                              0000                                0300000300                                                                            1100   2000030000  0110 0010000300                                                                              0000                                0300000400                                                                            1100   2000040000  0110 0010000400                                                                              0000                                0300000500                                                                            1100   2000050000  0110 0010000500                                                                              0000                                0300040003                                                                            1100   2000030004  0110 0010000004                                                                              0000                                0400000100                                                                            1101   3000010000  0111 0020000100                                                                              0001                                0400000200                                                                            1101   3000020000  0111 0020000200                                                                              0001                                0400000300                                                                            1101   3000030000  0111 0020000300                                                                              0001                                0400000400                                                                            1101   3000040000  0111 0020000400                                                                              0001                                0400000500                                                                            1101   3000050000  0111 0020000500                                                                              0001                                0400040003                                                                            1101   3000030004  0111 0020000004                                                                              0001                                0500000100                                                                            1110   4000010000  1000 0030000100                                                                              0010                                0500000200                                                                            1110   4000020000  1000 0030000200                                                                              0010                                0500000300                                                                            1110   4000030000  1000 0030000300                                                                              0010                                0500000400                                                                            1110   4000040000  1000 0030000400                                                                              0010                                0500000500                                                                            1110   4000050000  1000 0030000500                                                                              0010                                0300040003                                                                            1110   4000030004  1000 0030000004                                                                              0010                                3000300000                                                                            1111   5000010000  1001 0040000100                                                                              0011                                3000300010                                                                            1111   5000020000  1001 0040000200                                                                              0011                                3000300020                                                                            1111   5000030000  1001 0040000300                                                                              0011                                3000300030                                                                            1111   5000040000  1001 0040000400                                                                              0011                                3000300040                                                                            1111   5000050000  1001 0040000500                                                                              0011                                3000300050                                                                            1111   5000030004  1001 0040000004                                                                              0011                                3000300001                                                                            1111   1000000100  1010 0050000100                                                                              0100                                3000300003                                                                            1111   1000000200  1010 0050000200                                                                              0100                                3000300005                                                                            1111   1000000300  1010 0050000300                                                                              0100                                1000001000                                                                            0000   1000000400  1010 0050000400                                                                              0100                                1000002000                                                                            0000   1000000500  1010 0050000500                                                                              0100                                1000003000                                                                            0000   1000040003  1010 0050000004                                                                              0100                                1000004000                                                                            0000   2000000300  1011 0010000000                                                                              0101                                1000005000                                                                            0000   2000000200  1011 0010000010                                                                              0101                                1000030003                                                                            0000   2000000300  1011 0010000020                                                                              0101                                2000001000                                                                            0001   2000000400  1011 0010000030                                                                              0101                                2000002000                                                                            0001   2000000300  1011 0010000040                                                                              0101                                2000003000                                                                            0001   2000040003  1011 0010000030                                                                              0101                                0010000001                                                                            0101   0040000050  1000 0030002000                                                                              1100                                0010000003                                                                            0101   0040000001  1000 0030003000                                                                              1100                                0010000005                                                                            0101   0040000003  1000 0030004000                                                                              1100                                0020000000                                                                            0110   0040000005  1000 0030005000                                                                              1100                                0020000010                                                                            0110   0050000000  1001 0030000002                                                                              1100                                0020000020                                                                            0110   0050000010  1001 0040001000                                                                              1101                                0020000030                                                                            0110   0050000020  1001 0040002000                                                                              1101                                0020000040                                                                            0110   0050000030  1001 0040003000                                                                              1101                                0020000050                                                                            0110   0050000040  1001 0040004000                                                                              1101                                0020000001                                                                            0110   0050000050  1001 0040005000                                                                              1101                                0020000003                                                                            0110   0050000001  1001 0040000002                                                                              1101                                0020000005                                                                            0110   0050000003  1001 0050001000                                                                              1110                                0030000000                                                                            0111   0050000005  1001 0050002000                                                                              1110                                0030000010                                                                            0111   0010001000  1010 0050003000                                                                              1110                                0030000020                                                                            0111   0010002000  1010 0050004000                                                                              1110                                0030000030                                                                            0111   0010003000  1010 0050005000                                                                              1110                                0030000040                                                                            0111   0010004000  1010 0050000002                                                                              1110                                0030000050                                                                            0111   0010005000  1010 4000300000                                                                              1111                                0030000001                                                                            0111   0010000002  1010 4000300010                                                                              1111                                0030000003                                                                            0111   0020001000  1011 4000300020                                                                              1111                                0030000005                                                                            0111   0020002000  1011 4000300030                                                                              1111                                0040000000                                                                            1000   0020003000  1011 4000300040                                                                              1111                                0040000010                                                                            1000   0020004000  1011 4000300050                                                                              1111                                0040000020                                                                            1000   0020005000  1011 4000300001                                                                              1111                                0040000030                                                                            1000   0020000002  1011 4000300003                                                                              1111                                0040000040                                                                            1000   0030000003  1100 4000300005                                                                              1111                                ______________________________________                                    


9. The method of claim 7, wherein said look-up step comprises the stepof determining, using a squared euclidean distance, which table entry isidentified by a sequence of code symbols.
 10. A method for decoding datastored on a storage medium, wherein said stored data has been encodingusing an M=6 (3,6) code, comprising the steps of:reading the storagemedium to recover output waveform signal amplitudes; converting saidoutput waveform signal amplitudes into output code symbols, wherein eachoutput code symbol is at one of six levels; and decoding said outputcode symbols to obtain output data bits, wherein said output data bitscorrespond to the digital input data.
 11. The method of claim 10,wherein said step of decoding comprises the steps of:identifying with asliding window a sequence of code symbols that represents a given codesymbol set; and in a table comprising a number of entries correspondingto a number of possible unique sequences of code symbols, each entryidentified by one of said possible unique sequences of code symbols, andwherein each entry identifies an output data bit set that is a decodeddata bit set for the code symbol set represented by the sequence of codesymbols that identifies that entry, looking up with said identifiedsequence of code symbols the output data bit for said given code symbol.12. The method according to claim 11, wherein said table provides anoutput bit set x' for each sequence of code symbols y' according to thefollowing table:

    ______________________________________                                        Sequence                                                                      of Code        Sequence of Code Sequence of Code                              Symbols x'     Symbols     x'   Symbols   x'                                  ______________________________________                                        0000001000                                                                            0000   0001000100  1000 0020000100                                                                              0001                                0000002000                                                                            0000   0001000200  1000 0020000200                                                                              0001                                0000003000                                                                            0000   0001000300  1000 0020000300                                                                              0001                                0000004000                                                                            0000   0001000400  1000 0020000400                                                                              0001                                0000005000                                                                            0000   0001000500  1000 0020000500                                                                              0001                                0000030003                                                                            0000   0001000004  1000 0020000004                                                                              0001                                0000010000                                                                            0001   0002000100  1001 0030000100                                                                              0010                                0000020000                                                                            0001   0002000200  1001 0030000200                                                                              0010                                0000030000                                                                            0001   0002000300  1001 0030000300                                                                              0010                                0000040000                                                                            0001   0002000400  1001 0030000400                                                                              0010                                0000050000                                                                            0001   0002000500  1001 0030000500                                                                              0010                                0000030004                                                                            0001   0002000004  1001 0030000004                                                                              0010                                0000000100                                                                            0010   0003000100  1010 0040000100                                                                              0011                                0000000200                                                                            0010   0003000200  1010 0040000200                                                                              0011                                0000000300                                                                            0010   0003000300  1010 0040000300                                                                              0011                                0000000400                                                                            0010   0003000400  1010 0040000400                                                                              0011                                0000000500                                                                            0010   0003000500  1010 0040000500                                                                              0011                                0000040003                                                                            0010   0003000004  1010 0040000004                                                                              0011                                0001000000                                                                            0011   0004000100  1011 0050000100                                                                              0100                                0001000010                                                                            0011   0004000200  1011 0050000200                                                                              0100                                0001000020                                                                            0011   0004000300  1011 0050000300                                                                              0100                                0001000030                                                                            0011   0004000400  1011 0050000400                                                                              0100                                0001000040                                                                            0011   0004000500  1011 0050000500                                                                              0100                                0001000050                                                                            0011   0004000004  1011 0050000004                                                                              0100                                0001000001                                                                            0011   0005000100  1100 0010000000                                                                              0101                                0001000003                                                                            0011   0005000200  1100 0010000010                                                                              0101                                0001000005                                                                            0011   0005000300  1100 0010000020                                                                              0101                                0002000000                                                                            0100   0005000400  1100 0010000030                                                                              0101                                0002000010                                                                            0100   0005000500  1100 0010000040                                                                              0101                                0002000020                                                                            0100   0005000004  1100 0010000050                                                                              0101                                0002000030                                                                            0100   0000100010  1101 0010000001                                                                              0101                                0002000040                                                                            0100   0000100010  1101 0010000003                                                                              0101                                0002000050                                                                            0100   0000100020  1101 0010000005                                                                              0101                                0002000001                                                                            0100   0000100030  1101 0020000000                                                                              0110                                0002000003                                                                            0100   0000100040  1101 0020000010                                                                              0110                                0002000005                                                                            0100   0000100050  1101 0020000020                                                                              0110                                0003000000                                                                            0101   0000100001  1101 0020000030                                                                              0110                                0003000010                                                                            0101   0000100003  1101 0020000040                                                                              0110                                0003000020                                                                            0101   0000100005  1101 0020000050                                                                              0110                                0003000030                                                                            0101   0000300000  1110 0020000001                                                                              0110                                0003000040                                                                            0101   0000300010  1110 0020000003                                                                              0110                                0003000050                                                                            0101   0000300020  1110 0020000005                                                                              0110                                0003000001                                                                            0101   0000300030  1110 0030000000                                                                              0111                                0003000003                                                                            0101   0000300040  1110 0030000010                                                                              0111                                0003000005                                                                            0101   0000300050  1110 0030000020                                                                              0111                                0004000000                                                                            0110   0000300001  1110 0030000030                                                                              0111                                0004000010                                                                            0110   0000300003  1110 0030000040                                                                              0111                                0004000020                                                                            0110   0000300005  1110 0030000050                                                                              0111                                0004000030                                                                            0110   0000500000  1111 0030000001                                                                              0111                                0004000040                                                                            0110   0000500010  1111 0030000003                                                                              0111                                0004000050                                                                            0110   0000500020  1111 0030000005                                                                              0111                                0004000001                                                                            0110   0000500030  1111 0040000000                                                                              1000                                0004000003                                                                            0110   0000500040  1111 0040000010                                                                              1000                                0004000005                                                                            0110   0000500050  1111 0040000020                                                                              1000                                0005000000                                                                            0111   0000500001  1111 0040000030                                                                              1000                                0005000010                                                                            0111   0000500003  1111 0040000040                                                                              1000                                0005000020                                                                            0111   0000500005  1111 0040000050                                                                              1000                                0005000030                                                                            0111   0010000100  0000 0040000001                                                                              1000                                0005000040                                                                            0111   0010000200  0000 0040000003                                                                              1000                                0005000050                                                                            0111   0010000300  0000 0040000005                                                                              1000                                0005000001                                                                            0111   0010000400  0000 0050000000                                                                              1001                                0003000003                                                                            0111   0010000500  0000 0050000010                                                                              1001                                0005000005                                                                            0111   0010000004  0000 0050000020                                                                              1001                                0050000030                                                                            1001   0400001000  0011 0400000400                                                                              1101                                0050000040                                                                            1001   0400002000  0011 0400000500                                                                              1101                                0050000050                                                                            1001   0400003000  0011 0400040003                                                                              1101                                0050000001                                                                            1001   0400004000  0011 0500000100                                                                              1110                                0050000003                                                                            1001   0400005000  0011 0500000200                                                                              1110                                0050000005                                                                            1001   0400030003  0011 0500000300                                                                              1110                                0010001000                                                                            1010   0500001000  0100 0500000400                                                                              1110                                0010002000                                                                            1010   0500002000  0100 0500000500                                                                              1110                                0010003000                                                                            1010   0500003000  0100 0500040003                                                                              1110                                0010004000                                                                            1010   0500004000  0100 0000200000                                                                              1111                                0010005000                                                                            1010   0500005000  0100 0000200010                                                                              1111                                0010000002                                                                            1010   0500030003  0100 0000200020                                                                              1111                                0020001000                                                                            1011   0100010000  0101 0000200030                                                                              1111                                0020002000                                                                            1011   0100020000  0101 0000200040                                                                              1111                                0020003000                                                                            1011   0100030000  0101 0000200050                                                                              1111                                0020004000                                                                            1011   0100040000  0101 0000200001                                                                              1111                                0020005000                                                                            1011   0100050000  0101 0000200003                                                                              1111                                0020000002                                                                            1011   0100030004  0101 0000200005                                                                              1111                                0030001000                                                                            1100   0200010000  0110 0100001000                                                                              0000                                0030002000                                                                            1100   0200020000  0110 0100002000                                                                              0000                                0030003000                                                                            1100   0200030000  0110 0100003000                                                                              0000                                0030004000                                                                            1100   0200040000  0110 0100004000                                                                              0000                                0030005000                                                                            1100   0200050000  0110 0100005000                                                                              0000                                0030000002                                                                            1100   0200030004  0110 0100030003                                                                              0000                                0040001000                                                                            1101   0300010000  0111 0200001000                                                                              0001                                0040002000                                                                            1101   0300020000  0111 0200002000                                                                              0001                                0040003000                                                                            1101   0300030000  0111 0200003000                                                                              0001                                0040004000                                                                            1101   0300040000  0111 0200004000                                                                              0001                                0040005000                                                                            1101   0300050000  0111 0200005000                                                                              0001                                0040000002                                                                            1101   0300030004  0111 0200030003                                                                              0001                                0050001000                                                                            1110   0400010000  1000 0300001000                                                                              0010                                0050002000                                                                            1110   0400020000  1000 0300002000                                                                              0010                                0050003000                                                                            1110   0400030000  1000 0300003000                                                                              0010                                0050004000                                                                            1110   0400040000  1000 0300004000                                                                              0010                                0050005000                                                                            1110   0400050000  1000 0300005000                                                                              0010                                0050000002                                                                            1110   0400030004  1000 0300030003                                                                              0010                                0000400000                                                                            1111   0500010000  1001 0400001000                                                                              0011                                0000400010                                                                            1111   0500020000  1001 0400002000                                                                              0011                                0000400020                                                                            1111   0500030000  1001 0400003000                                                                              0011                                0000400030                                                                            1111   0500040000  1001 0400004000                                                                              0011                                0000400040                                                                            1111   0500050000  1001 0400005000                                                                              0011                                0000400050                                                                            1111   0500030004  1001 0400030003                                                                              0011                                0000400001                                                                            1111   0100000100  1010 0500001000                                                                              0100                                0000400003                                                                            1111   0100000200  1010 0500002000                                                                              0100                                0000400005                                                                            1111   0100000300  1010 0500003000                                                                              0100                                0100001000                                                                            0000   0100000400  1010 0500004000                                                                              0100                                0100002000                                                                            0000   0100000500  1010 0500005000                                                                              0100                                0100003000                                                                            0000   0100040003  1010 0500030003                                                                              0100                                0100004000                                                                            0000   0200000100  1011 0100010000                                                                              0101                                0100005000                                                                            0000   0200000200  1011 0100020000                                                                              0101                                0100030003                                                                            0000   0200000300  1011 0100030000                                                                              0101                                0200001000                                                                            0001   0200000400  1011 0100040000                                                                              0101                                0200002000                                                                            0001   0200000500  1011 0100050000                                                                              0101                                0200003000                                                                            0001   0200040003  1011 0100030004                                                                              0101                                0200004000                                                                            0001   0300000100  1100 0200010000                                                                              0110                                0200005000                                                                            0001   0300000200  1100 0200020000                                                                              0110                                0200030003                                                                            0001   0300000300  1100 0200030000                                                                              0110                                0300001000                                                                            0010   0300000400  1100 0200040000                                                                              0110                                0300002000                                                                            0010   0300000500  1100 0200050000                                                                              0110                                0300003000                                                                            0010   0300040003  1100 0200030004                                                                              0110                                0300004000                                                                            0010   0400000100  1101 0300010000                                                                              0111                                0306003000                                                                            0010   0400000200  1101 0300020000                                                                              0111                                0300030003                                                                            0010   0400000300  1101 0300030000                                                                              0111                                0300040000                                                                            0111   2000004000  0001 3000000100                                                                              1100                                0300050000                                                                            0111   2000005000  0001 3000000200                                                                              1100                                0300030004                                                                            0111   2000030003  0001 3000000300                                                                              1100                                0400010000                                                                            1000   3000001000  0010 3000000400                                                                              1100                                0400020000                                                                            1000   3000002000  0010 3000000500                                                                              1100                                0400030000                                                                            1000   3000003000  0010 3000040003                                                                              1100                                0400040000                                                                            1000   3000004000  0010 4000000100                                                                              1101                                0400050000                                                                            1000   3000005000  0010 4000000200                                                                              1101                                0400030004                                                                            1000   3000030003  0010 4000000300                                                                              1101                                0500010000                                                                            1001   4000001000  0011 4000000400                                                                              1101                                0500020000                                                                            1001   4000002000  0011 4000000500                                                                              1101                                0500030000                                                                            1001   4000003000  0011 4000040003                                                                              1101                                0500040000                                                                            1001   4000004000  0011 5000000100                                                                              1110                                0500050000                                                                            1001   4000005000  0011 5000000200                                                                              1110                                0500030004                                                                            1001   4000030003  0011 5000000300                                                                              1110                                0100000100                                                                            1010   5000001000  0100 5000000400                                                                              1110                                0100000200                                                                            1010   5000002000  0100 5000000500                                                                              1110                                0100000300                                                                            1010   5000003000  0100 5000040003                                                                              1110                                0100000400                                                                            1010   5000004000  0100 3000400000                                                                              1111                                0100000500                                                                            1010   5000005000  0100 3000400010                                                                              1111                                0100040003                                                                            1010   5000030003  0100 3000400020                                                                              1111                                0200000100                                                                            1011   1000010000  0101 3000400030                                                                              1111                                0200000200                                                                            1011   1000020000  0101 3000400040                                                                              1111                                0200000300                                                                            1011   1000030000  0101 3000400050                                                                              1111                                0200000400                                                                            1011   1000040000  0101 3000400001                                                                              1111                                0200000500                                                                            1011   1000050000  0101 3000400003                                                                              1111                                0200040003                                                                            1011   1000030004  0101 3000400005                                                                              1111                                0300000100                                                                            1100   2000010000  0110 0010000100                                                                              0000                                0300000200                                                                            1100   2000020000  0110 0010000200                                                                              0000                                0300000300                                                                            1100   2000030000  0110 0010000300                                                                              0000                                0300000400                                                                            1100   2000040000  0110 0010000400                                                                              0000                                0300000500                                                                            1100   2000050000  0110 0010000500                                                                              0000                                0300040003                                                                            1100   2000030004  0110 0010000004                                                                              0000                                0400000100                                                                            1101   3000010000  0111 0020000100                                                                              0001                                0400000200                                                                            1101   3000020000  0111 0020000200                                                                              0001                                0400000300                                                                            1101   3000030000  0111 0020000300                                                                              0001                                0400000400                                                                            1101   3000040000  0111 0020000400                                                                              0001                                0400000500                                                                            1101   3000050000  0111 0020000500                                                                              0001                                0400040003                                                                            1101   3000030004  0111 0020000004                                                                              0001                                0500000100                                                                            1110   4000010000  1000 0030000100                                                                              0010                                0500000200                                                                            1110   4000020000  1000 0030000200                                                                              0010                                0500000300                                                                            1110   4000030000  1000 0030000300                                                                              0010                                0500000400                                                                            1110   4000040000  1000 0030000400                                                                              0010                                0500000500                                                                            1110   4000050000  1000 0030000500                                                                              0010                                0300040003                                                                            1110   4000030004  1000 0030000004                                                                              0010                                3000300000                                                                            1111   5000010000  1001 0040000100                                                                              0011                                3000300010                                                                            1111   5000020000  1001 0040000200                                                                              0011                                3000300020                                                                            1111   5000030000  1001 0040000300                                                                              0011                                3000300030                                                                            1111   5000040000  1001 0040000400                                                                              0011                                3000300040                                                                            1111   5000050000  1001 0040000500                                                                              0011                                3000300050                                                                            1111   5000030004  1001 0040000004                                                                              0011                                3000300001                                                                            1111   1000000100  1010 0050000100                                                                              0100                                3000300003                                                                            1111   1000000200  1010 0050000200                                                                              0100                                3000300005                                                                            1111   1000000300  1010 0050000300                                                                              0100                                1000001000                                                                            0000   1000000400  1010 0050000400                                                                              0100                                1000002000                                                                            0000   1000000500  1010 0050000500                                                                              0100                                1000003000                                                                            0000   1000040003  1010 0050000004                                                                              0100                                1000004000                                                                            0000   2000000300  1011 0010000000                                                                              0101                                1000005000                                                                            0000   2000000200  1011 0010000010                                                                              0101                                1000030003                                                                            0000   2000000300  1011 0010000020                                                                              0101                                2000001000                                                                            0001   2000000400  1011 0010000030                                                                              0101                                2000002000                                                                            0001   2000000300  1011 0010000040                                                                              0101                                2000003000                                                                            0001   2000040003  1011 0010000030                                                                              0101                                0010000001                                                                            0101   0040000050  1000 0030002000                                                                              1100                                0010000003                                                                            0101   0040000001  1000 0030003000                                                                              1100                                0010000005                                                                            0101   0040000003  1000 0030004000                                                                              1100                                0020000000                                                                            0110   0040000005  1000 0030005000                                                                              1100                                0020000010                                                                            0110   0050000000  1001 0030000002                                                                              1100                                0020000020                                                                            0110   0050000010  1001 0040001000                                                                              1101                                0020000030                                                                            0110   0050000020  1001 0040002000                                                                              1101                                0020000040                                                                            0110   0050000030  1001 0040003000                                                                              1101                                0020000050                                                                            0110   0050000040  1001 0040004000                                                                              1101                                0020000001                                                                            0110   0050000050  1001 0040005000                                                                              1101                                0020000003                                                                            0110   0050000001  1001 0040000002                                                                              1101                                0020000005                                                                            0110   0050000003  1001 0050001000                                                                              1110                                0030000000                                                                            0111   0050000005  1001 0050002000                                                                              1110                                0030000010                                                                            0111   0010001000  1010 0050003000                                                                              1110                                0030000020                                                                            0111   0010002000  1010 0050004000                                                                              1110                                0030000030                                                                            0111   0010003000  1010 0050005000                                                                              1110                                0030000040                                                                            0111   0010004000  1010 0050000002                                                                              1110                                0030000050                                                                            0111   0010005000  1010 4000300000                                                                              1111                                0030000001                                                                            0111   0010000002  1010 4000300010                                                                              1111                                0030000003                                                                            0111   0020001000  1011 4000300020                                                                              1111                                0030000005                                                                            0111   0020002000  1011 4000300030                                                                              1111                                0040000000                                                                            1000   0020003000  1011 4000300040                                                                              1111                                0040000010                                                                            1000   0020004000  1011 4000300050                                                                              1111                                0040000020                                                                            1000   0020005000  1011 4000300001                                                                              1111                                0040000030                                                                            1000   0020000002  1011 4000300003                                                                              1111                                0040000040                                                                            1000   0030000003  1100 4000300005                                                                              1111                                ______________________________________                                    